/**
 * 退款控制器 - 处理支付退款申请的REST API接口
 *
 * 开发人员：徐少洋
 * 开发时间：2025-10-25 至 2025-10-28
 * 模块职责：提供支付退款相关的REST API接口，支持退款申请的创建和处理
 *
 * 技术要点：
 * - RESTful API设计，遵循REST规范
 * - 退款金额验证和业务规则处理
 * - 支付订单关联和退款记录管理
 * - 多租户退款数据隔离处理
 * - 异常处理和错误响应机制
 *
 * 开发故事：负责退款控制器的开发，与退款服务层和支付系统深度配合，为企业提供安全的退款申请和处理服务。
 */
package com.pbl.controller;

import com.pbl.common.model.ApiResponse;
import com.pbl.entity.RefundRecord;
import com.pbl.service.RefundService;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.Min;
import java.math.BigDecimal;

@RestController
@RequestMapping("/refunds")
public class RefundController {

    private final RefundService refundService;

    /**
     * 构造退款控制器
     * @param refundService 退款服务层
     */
    public RefundController(RefundService refundService) {
        this.refundService = refundService;
    }

    @PostMapping
    public ApiResponse<RefundRecord> request(@RequestParam Long paymentOrderId, @RequestParam @Min(1) BigDecimal amount) {
        return ApiResponse.success(refundService.requestRefund(paymentOrderId, amount));
    }
}
